package com.zhoujian.Proxy.DynamicProxy.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang .reflect.Proxy;

public class Main {
    public static void main(String[] args) {
        //jdk提供的代理实现，主要是使用Proxy类来完成
        //1.classloader：被代理类的类加载器
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        //2.代理类需要实现的接口数组
//        Class[] interfaces = new Class[]{DataQuery.class};
        Class[] interfaces = new Class[]{DataQuery.class};
        //3.invocationHandler：
        InvocationHandler invocationHandler = new CacheInvocationHandler();
        DataQuery dataQuery = (DataQuery)Proxy.newProxyInstance(
                classLoader,interfaces,invocationHandler
        );

        //事实上，调用query方法的时候，调用了invoke方法
        String result = dataQuery.query("key1");
        System.out.println(result);
        System.out.println("----------------");
        result = dataQuery.query("key1");
        System.out.println(result);
        System.out.println("----------------");
        result = dataQuery.query("key2");
        System.out.println(result);
        System.out.println("----------------");
    }
}
